package transaction

import (
	"bytes"
	"publicChainSystem/wallet"
)

/**
 *@author:zhengyilong
 *@email:1797344574@qq.com
 *@phone:13479394730
 *@DateTime:2022/4/18 9:29
 **/

//交易输出的结构体
type Output struct {
	//描述输出的币的金额的
	Value uint
	//锁定脚本（存的是公钥哈希）
	ScriptPubkey []byte
}

//实例化output结构体的函数
func NewOutput(value uint,scriptPubKey []byte)Output {
	return Output{value,scriptPubKey}
}

//判断某个人是否能解除这个交易（判断这笔钱是不是某个人的的）
func (output *Output) IsUnlock(name string)bool {
	if name == "" {
		return false
	}
	//根据地址获取公钥哈希
	pubHash, err := wallet.GetPubHash(name)
	if err != nil {
		return false
	}
	return bytes.Compare(output.ScriptPubkey,pubHash) == 0
}